
int P1 = 11;
int P2 = 12;

int P6 = 36;
int P7 = 37;
int P8 = 38;
int P9 = 39;
int P10 = 40;
int P12 = 42;
int P13 = 43;
int P15 = 45;
int P16 = 46;
int P17 = 47;
int P18 = 48;
int P19 = 49;
int P20 = 50;
int P21 = 51;
int P22 = 52;

int LIM = 1;

void setup() {                
  pinMode(P1, OUTPUT); 
  pinMode(P2, OUTPUT);    
  
  // Digit 1
  pinMode(P6, OUTPUT);   
  pinMode(P7, OUTPUT);    
  pinMode(P8, OUTPUT);  
  pinMode(P9, OUTPUT);  

  // Digit 2
  pinMode(P10, OUTPUT);   
  pinMode(P12, OUTPUT);    
  pinMode(P13, OUTPUT);  

  // Digit 3
  pinMode(P15, OUTPUT);   
  pinMode(P16, OUTPUT);    
  pinMode(P17, OUTPUT);  
  pinMode(P18, OUTPUT);  

  // Digit 4
  pinMode(P19, OUTPUT);   
  pinMode(P20, OUTPUT);    
  pinMode(P21, OUTPUT);  

}
void segment(int mode,int x)
{
  digitalWrite(P1, LOW);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(P2, LOW);
  //delay(50);
  if(mode==1)
  {
    digitalWrite(P1, HIGH);
  }
  if(mode==2)
  {
    digitalWrite(P2, HIGH);
  }
  
  digitalWrite(x, HIGH);
  delay(5);               // wait for a second
  digitalWrite(x, LOW);    // turn the LED off by making the voltage LOW
  //delay(1);               // wait for a second
}

void dig_1_number(int n)
{
  for(int j=0;j<LIM;j++)
  {
  if(n==1)
  {
   segment(1,P6); // B
   segment(1,P9); // C
  }
  if(n==2)
  {
   segment(1,P7); // A
   segment(1,P6); // B
   segment(2,P7); // G
   segment(2,P8); // D
   segment(1,P8); // E
  }
  if(n==3)
  {
   segment(1,P7); // A
   segment(1,P6); // B
   segment(2,P7); // G
   segment(1,P9); // C
   segment(2,P8); // D
  }
  }
}

void dig_2_number(int n)
{
  for(int j=0;j<LIM;j++)
  {
  if(n==1)
  {
   segment(1,P10); // B
   segment(1,P12); // C
  }
  if(n==2)
  {
   segment(1,P13); // A
   segment(1,P10); // B
   segment(2,P10); // G
   segment(2,P12); // D
   segment(2,P9); // E
  }
  if(n==3)
  {
   segment(1,P7); // A
   segment(1,P6); // B
   segment(2,P7); // G
   segment(1,P9); // C
   segment(2,P8); // D
  }
  }
}



void dig_3_number(int n)
{
  for(int j=0;j<LIM;j++)
  {
  if(n==1)
  {
   segment(2,P16); // B
   segment(2,P17); // C
  }
    if(n==2)
  {
   segment(2,P15); // A
   segment(2,P16); // B
   segment(1,P16); // G
   segment(1,P17); // D
   segment(1,P18); // E
  }
  }
}

void dig_4_number(int n)
{
  for(int j=0;j<LIM;j++)
  {
  if(n==1)
  {
   segment(1,P19); // B
   segment(1,P20); // C
  }
    if(n==2)
  {
   segment(1,P7); // A
   segment(1,P6); // B
   segment(2,P7); // G
   segment(2,P8); // D
   segment(1,P8); // E
  }
  }
}

void loop() {

for(int j=1;j<=2;j++)
{
  dig_1_number(j);
  //delay(30);
  dig_2_number(j);
  //delay(30);
  dig_3_number(j);
  //delay(30);
  dig_4_number(j);
  delay(30);
}

}
